package com.tjetc;

import java.util.Arrays;

public class _26HomeWork {
    public static void main(String[] args) {
        /*
            4.已知有个升序的数组，要求插入一个元素，该数组顺序依然是升序，比如：
            [10，12，45，90],添加23后，数组为[10，12，23，45，90]

            思路分析：
            1.输入
                一个元素
            2.输出
                添加后的数组
            3.处理逻辑
                （1）扩容操作
                    省略
                （2）元素确定位置-- 比较大小
                只要找到第一个比数组中的大的位置
                如果找不到 放最后
                核心：查找
         */

        // 定义原数组
        int[] arr = {10, 12, 45, 90};
        // 定义一个要插入数字 （可以是输入的）
        int insertNum = 23;
        int index = -1; // 数组的索引

        System.out.println(Arrays.toString(arr));
        // 扩容和查找
        int[] newArr = new int[arr.length + 1];

        for (int i = 0; i < arr.length; i++) {
            if (insertNum <= arr[i]) {
                // 记录当前要插入的位置
                index = i;
                break;
            }
        }

        // 说明没找到 意味插入的数字比原有数组的数字都大
        if (index == -1) {
            index = newArr.length - 1;
        }

       int j = 0;
        // 将所有数据全部放进新数组
        for (int i = 0; i < newArr.length; i++) {
            // 如果不等于 则将原数组中的数据 插入到新数组中
            if (i != index) {
                newArr[i] = arr[j];
                j++;
            }else {
                // 插入的要插入的数字
                newArr[i] = insertNum;
            }
        }

        // 改变的是原数组
        arr = newArr;
        System.out.println(Arrays.toString(arr));

        // 新思路：默认插最后，再调用Arrays.sort（）方法进行排序即可 改变原地址
    }
}
